package com.aterrizar.persistencia.servicios;


import java.util.List;

import com.aterrizar.dominio.reservacion.asientos.Asiento;
import com.aterrizar.dominio.usuarios.Usuario;
import com.aterrizar.persistencia.daos.AsientoDAO;
import com.aterrizar.persistencia.daos.UsuarioDAO;

public class ReservarVueloUsuario implements Operation<Usuario> {

	private Integer id;
	private List<Integer> idAsientos;
	
	public ReservarVueloUsuario(Integer id, List<Integer> idAsientos){
		super();
		this.id = id;
		this.idAsientos = idAsientos;
	}
	
	
	public Usuario execute() {
		Usuario usuario = new UsuarioDAO().get(id);
		List<Asiento> asientos = new AsientoDAO().get(idAsientos);
		boolean libres = true;
		for(Asiento a : asientos) {
			libres = libres && !a.estaReservado();
		}
		if(libres) {
			for(Asiento asiento : asientos) {
				asiento.reservar(usuario);
				usuario.getReservas().add(asiento);
			}
		}
		
		return usuario;
	}

}
